﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Factory
{
    public partial class Login : Form
    {
        public Login()
        {
            InitializeComponent();
        }

        public bool logar(string login, string senha)
        {

            DAOBase m_cnn = new DAOBase();

            #region Query
            string query =
                @"SELECT ID
                  ,Documento
                  ,Login                     
                  ,Senha
                  ,FlagAdministrador
                FROM Usuario
                WHERE Login = @Login
                AND Senha = @Senha";
            #endregion

            SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());

            cmd.Parameters.Add(new SqlParameter("Login", login));
            cmd.Parameters.Add(new SqlParameter("Senha", senha));

            SqlDataReader dr = cmd.ExecuteReader();

            IList<Usuario> result = ReaderToObjects(dr);

            m_cnn.DestroyConnection();

            if (result.Count() > 0)
            {
                return true;
            }

            else
            {
                return false;
            }
        }


        public IList<Usuario> ReaderToObjects(IDataReader reader)
        {
            if (reader.IsClosed)
            {
                throw new ArgumentException("O DataReader fornecido já estava fechado.");
            }

            int Id_Pos = reader.GetOrdinal("ID");
            int Login_Pos = reader.GetOrdinal("Login");
            int Senha_Pos = reader.GetOrdinal("Senha");
            int Documento_Pos = reader.GetOrdinal("Documento");
            int TipoFuncionario_Pos = reader.GetOrdinal("FlagAdministrador");

            IList<Usuario> result = new List<Usuario>();

            while (reader.Read())
            {
                Usuario obj = new Usuario
                {
                    Id = reader.GetInt32(Id_Pos),
                    Login = reader.GetString(Login_Pos),
                    Senha = reader.GetString(Senha_Pos),
                    cpf = reader.GetString(Documento_Pos),
                    TipoFuncionario = reader.GetInt32(TipoFuncionario_Pos),
                };

                result.Add(obj);
            }
            return result;
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            if (!logar(txtLogin.Text, txtSenha.Text))
            {
                MessageBox.Show("Login ou senha incorretos, seu newbie");
                return;
            }

            UsuarioDAO user = new UsuarioDAO();
            IList<Usuario> users = user.ObterUsuarios();
            foreach (Usuario u in users)
            {
                if (u.Login == txtLogin.Text)
                {
                    Sessao.usuarioLogado = u;
                }
            }
            MenuPrincipal menuprincipal = new MenuPrincipal();
            menuprincipal.Show();
            this.Hide();
        }

        private void Login_Load(object sender, EventArgs e)
        {

        }
    }
}
